The present invention involves the computation of a rotor position for a brushless DC motor assembly that does not include a rotor position sensor.
Furthermore, the present invention involves the use of the computed rotor position to control the rotor position.
Brushless DC motors are typically used in the 0.5 to 5 horsepower range and in applications in which there is a fair amount of stopping at precisely controlled positions. One example of this type of application is in the drive for an x-y table in a machining operation. An x-y table moves a workpiece in an x-y plane while the workpiece is being machined by, for example, a laser. Quick acceleration is desirable so that the machining may be performed rapidly. Perhaps more importantly, table positioning repeatability is crucial, so that the machining can be accurate.
Because of the need for precisely repeatable stopping that is necessitated by applications such as x-y table control, brushless DC motors (BDCMs) typically include some device for sensing rotor position. This information is then fed to a servo so that stopping position may be accurately controlled. Unfortunately, the sensors used for this purpose tend to be expensive, frequently costing as much as the motor does, and delicate.
FIG. 1 shows a typical prior art servo control loop 10 for a BDCM 11. Everything shown, except for BDCM 11, position encoder 12 and amplifier 24 is implemented as software in a data processing assembly that forms a part of the motor assembly. Because both the prior art system and the system of the invention may be digital, this application contains many references to time intervals. The position encoder periodically forms measurements of the rotor position which are sent to the rest of the system in digital form. These measurements are time indexed by a subscript "n" in the equations that follow, although this subscript may be omitted when the equation includes variables from a single time interval only. The duration of the time intervals between measurements is denoted by "dt." The current time interval is denoted by "N." These conventions remain constant both in the discussion of the prior art and the invention.
To determine a position error the measured rotor .theta..sub.m, from a position encoder 12, is subtracted from the commanded rotor stopping position .theta..sub.c at a comparator 13. This is multiplied by a constant, k.sub..theta., at a P block 14 and limited by an .omega. (rotor speed) limiter 16 to find the commanded .omega., .omega..sub.c. The limiter 16 sets the value of .omega..sub.c as follows: EQU .omega..sub.c =min{.omega..sub.m +max.omega..sub..delta. ; .omega..sub.max ; k.sub..theta. (.theta..sub.c -.theta..sub.m)} (1)
Where max.omega..sub..delta. and .omega..sub.max are user selected and represent respectively the maximum increase in .omega..sub.c in one time interval and the maximum value for .omega..sub.c.
The limiter is necessary because the commanded position .theta..sub.c may have a large value that reflects, for example, several thousand rotations beyond the measured position .theta..sub.m. In this event, without the limiter 16, .omega..sub.c would assume a larger value than could be supported by the BDCM 11. When .theta..sub.c -.theta..sub.m becomes small, however, it is desirable for .omega..sub.c to decrease in anticipation of the rotor stopping. Also, when the motor is first beginning to rotate, max.omega..sub..delta. keeps commanded acceleration to within achievable limits.
At a differentiating block 20 .theta..sub.m is differentiated to yield the measured rotor speed .omega..sub.m, which, at a comparator block 18 is subtracted from .omega..sub.c (for subsequent time interval N+1). The resultant value .omega..sub..delta. is fed through a PI block 22, which performs the following operation: EQU T.sub.cN =k.sub.1 .SIGMA..sub.0.sup.N .omega..sub..delta.n dt+k.sub.2 .omega.N (2)
The output, T.sub.cN, is referred to as the torque or current command and is sent to an amplifier controller 23. The encoder values also feed a commutator 26 that has the task of supplying, to the amplifier controller, the angle for the electromagnetic field to be created by the stator windings as driven by the amplifier 24.
FIG. 2 shows amplifier 24 having a set of six transistors Q.sub.1 -Q.sub.6 that are controlled by controller 23 to create an electromagnetic field of the commanded angle and magnitude (as received from the commutator 26 and PI block 22) by controlling the current through the stator windings of BDCM 11, each of which is connected to an output line 30a-30c. Diodes D1-D6 are for safety purposes. The voltage at the top or front of the swithces, V.sub.f is produced by a rectifier 35 and is measured by resister R.sub.1, because there may be occasional deviations from the desired value of V.sub.f. The voltage at each one of the terminals 30a-30c may be deduced from a knowledge of the most recent switching times and the actual value of V.sub.f. Because a switching amplifier such as amplifier 124 can produce a voltage pulse having a time duration on the order of 0.8 .mu.sec, which is far shorter in duration than the time constants of the stator windings, accurate control of the voltage at the motor terminals is possible, with the motor 111 input voltages appearing as sin waves over time. Elements 312-320 will be discussed below.
Although it has long been known that commutation information could be obtained by examining the voltage-to-current relationship ("V/I") at the input terminals of a motor, this information was thought to be too noisy, particularly as the motor slowed as it neared a commanded stopping position, and as it subsequently stopped, to be of practical benefit in determining and controlling rotor position.
What is, therefore, needed but not yet available is a brushless sensorless DC motor assembly that can repeatedly turn and accurately stop at a commanded position.